home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / bsf.jar / com / ibm / cs / util / ReflectionUtils$MoreSpecific.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-09-24  |  1.8 KB  |  50 lines

  1. package com.ibm.cs.util;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Vector;
  5.  
  6. class ReflectionUtils$MoreSpecific extends Vector {
  7.    void addItem(Object var1) {
  8.       if (((Vector)this).size() == 0) {
  9.          ((Vector)this).addElement(var1);
  10.       } else {
  11.          Class[] var2 = ReflectionUtils.entryGetParameterTypes(var1);
  12.          boolean var3 = true;
  13.          Enumeration var4 = ((Vector)this).elements();
  14.  
  15.          while(var3 & var4.hasMoreElements()) {
  16.             Object var5 = var4.nextElement();
  17.             Class[] var6 = ReflectionUtils.entryGetParameterTypes(var5);
  18.             if (ReflectionUtils.access$0(var6, var2)) {
  19.                ((Vector)this).removeElement(var5);
  20.             } else if (ReflectionUtils.access$0(var2, var6)) {
  21.                var3 = false;
  22.             }
  23.          }
  24.  
  25.          if (var3) {
  26.             ((Vector)this).addElement(var1);
  27.          }
  28.  
  29.       }
  30.    }
  31.  
  32.    Object getMostSpecific(Class var1, String var2, Class[] var3, boolean var4) throws NoSuchMethodException {
  33.       if (((Vector)this).size() == 1) {
  34.          return ((Vector)this).firstElement();
  35.       } else if (((Vector)this).size() <= 1) {
  36.          return null;
  37.       } else {
  38.          StringBuffer var5 = new StringBuffer();
  39.          Enumeration var6 = ((Vector)this).elements();
  40.          var5.append(var6.nextElement());
  41.  
  42.          while(var6.hasMoreElements()) {
  43.             var5.append(" and ").append(var6.nextElement());
  44.          }
  45.  
  46.          throw new NoSuchMethodException(ReflectionUtils.access$1(var1, var2, var3, var4) + " is ambiguous. It matches " + var5.toString());
  47.       }
  48.    }
  49. }
  50.